//
// Created by jimmyteng on 25-4-14.
//
#include "ros/ros.h"
#include "std_msgs/String.h"

#include <sstream>

int main(int argc, char **argv) {
  // 初始化 ROS 节点
  ros::init(argc, argv, "simple_publisher_node");

  // 创建节点句柄
  ros::NodeHandle nh;

  // 创建一个发布者，发布到 /chatter 话题
  ros::Publisher chatter_pub = nh.advertise<std_msgs::String>("/chatter", 1000);

  // 设置循环频率为 10Hz
  ros::Rate loop_rate(10);

  int count = 0;

  // 循环直到节点关闭
  // ros::ok() 用于检查 ROS 是否仍然在运行
  // 在 Ctrl+C 或者 rosnode kill 时会返回 false
  while (ros::ok()) {
    // 创建消息
    std_msgs::String msg;
    std::stringstream ss;
    ss << "Hello ROS! Count: " << count;
    msg.data = ss.str();

    // 发布消息
    ROS_INFO("%s", msg.data.c_str());
    chatter_pub.publish(msg);

    // 处理回调函数（如果有）
    ros::spinOnce();

    // 按照循环频率休眠
    loop_rate.sleep();
    ++count;
  }

  return 0;
}